package sort;

/**
 * TC01	[]	升序	[]
 * TC02	[5]	升序	[5]
 * TC03	[3, 1, 4, 1, 5, 9, 2, 6, 5, 3]	升序	[1, 1, 2, 3, 3, 4, 5, 5, 6, 9]
 * TC04	[10, -2, 0, 5, -5, 3]	升序	[-5, -2, 0, 3, 5, 10]
 * TC05	[1, 2, 3, 4, 5]	升序	[1, 2, 3, 4, 5]
 * TC06	[5, 4, 3, 2, 1]	升序	[1, 2, 3, 4, 5]
 * TC07	[1, 1, 1, 1, 1]	升序	[1, 1, 1, 1, 1]
 * TC08	[100, 200, 50, 150, 250]	升序	[50, 100, 150, 200, 250]
 * TC09	[1, 2, 3, 4, 5]	降序	[5, 4, 3, 2, 1]
 * TC10	[5, 4, 3, 2, 1]	降序	[5, 4, 3, 2, 1]
 * TC11	[1, 1, 1, 1, 1]	降序	[1, 1, 1, 1, 1]
 * TC12	[100, 200, 50, 150, 250]	降序	[250, 200, 150, 100, 50]
 * TC13	[0, -1, -2, -3, -4]	升序	[-4, -3, -2, -1, 0]
 * TC14	[0, -1, -2, -3, -4]	降序	[0, -1, -2, -3, -4]
 * TC15	[1, -1, 2, -2, 3, -3]	升序	[-3, -2, -1, 1, 2, 3]
 * TC16	[1, -1, 2, -2, 3, -3]	降序	[3, 2, 1, -1, -2, -3]
 * TC17	[10, 20, 30, 40, 50]	升序	[10, 20, 30, 40, 50]
 * TC18	[50, 40, 30, 20, 10]	升序	[10, 20, 30, 40, 50]
 * TC19	[10, 20, 30, 40, 50]	降序	[50, 40, 30, 20, 10]
 * TC20	[50, 40, 30, 20, 10]	降序	[50, 40, 30, 20, 10]
 */
public class Test {
    /**
     * 测试插入排序
     */
    public static void test1() {
        int[] arr = {1, 5, 3, 2, 4, 4, 6, 7, 8, 9, 0};
        Sort.insertSort(arr);
        Sort.show(arr);
    }

    /**
     * 测试冒泡排序
     */
    public static void test2() {
        int[] arr = {1, 5, 3, 2, 4, 4, 6, 7, 8, 9, 0};
        Sort.bubbleSort2(arr);
        Sort.show(arr);
        System.out.println();
    }


    /**
     * 测试希尔排序
     */
    public static void test3() {
        int[] arr = {1, 5, 3, 2, 4, 4, 6, 7, 8, 9, 0};
        Sort.shellSort(arr);
        Sort.show(arr);
    }

    /**
     * 测试选择排序
     */
    public static void test4() {
        int[] arr = {1, 5, 3, 2, 4, 4, 6, 8, 7, 9, 0};
        Sort.selectSort1(arr);
        Sort.show(arr);
    }

    /**
     * 测试选择排序优化版
     */
    public static void test5() {
        int[] arr = {11, 5, 3, 2, 4, 4, 6, 8, 7, 9, 0};
        Sort.selectSort2(arr);
        Sort.show(arr);
    }

    /**
     * 测试堆排序
     */
    public static void test6() {
        int[] arr = {11, 5, 3, 2, 4, 4, 6, 8, 7, 9, 0};
        Sort.heapsort(arr);
        Sort.show(arr);
    }

    /**
     * 测试快速排序
     */
    public static void test7() {
        int[] arr = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
        Sort.quickSort1(arr);
        Sort.show(arr);
    }

    /**
     * 测试快速排序优化版
     */
    public static void test8() {
        int[] arr = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
        Sort.quickSort2(arr);
        Sort.show(arr);
    }

    /**
     * 测试非递归快速排序
     */
    public static void test9() {
        int[] arr = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
        Sort.quickSortNor(arr);
        Sort.show(arr);
    }

    /**
     * 测试归并排序
     */
    public static void test10() {
        int[] arr = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
        Sort.mergeSort(arr);
        Sort.show(arr);
    }

    /**
     * 测试非递归归并排序
     */
    public static void test11() {
        int[] arr = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
        Sort.mergeSortNor(arr);
        Sort.show(arr);
    }

    /**
     * 测试计数排序
     */
    public static void test12() {
        int[] arr = {6, 5, 7, 3, 2, 1, 2, 7, 9, 9, 3, 4, 5, 10, 8};
        Sort.countSort(arr);
        Sort.show(arr);
    }

    public static void main(String[] args) {
//        test1();
//        test2();
//        test3();
//        test4();
//        test5();
//        test6();
        test7();
//        test8();
//        test9();
//        test10();
//        test11();
//        test12();
    }

}
